package ysq.xyg.sale.service;


import ysq.xyg.base.model.dto.ReturnEntity;
import ysq.xyg.base.service.BaseService;
import ysq.xyg.sale.model.po.SaleProduct;
import ysq.xyg.sys.model.po.SysUser;
import ysq.xyg.sale.model.vo.SaleProductVo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 销售模块-销售产品service接口
 *
 * @author shengQiang yu
 * @date 2019-9-9 14:17:04
 */
public interface SaleProductService extends BaseService<SaleProduct> {
    /**
     * 创建产品
     *
     * @param id 商品id
     * @param priceType 套餐类型:1、试用期套餐，2、一年套餐，3、两年套餐，4、三年套餐
     * @param currentUser 当前用户
     * @param request
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    ReturnEntity createProduct(HttpServletRequest request, String id,  String priceType, SysUser currentUser);
    /**
     * 续费产品
     *
     * @param id 商品id
     * @param productMyId 我的续费商品id
     * @param priceType 套餐类型:1、试用期套餐，2、一年套餐，3、两年套餐，4、三年套餐
     * @param currentUser 当前用户
     * @param request
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    ReturnEntity addProduct(HttpServletRequest request, String id, String priceType,String productMyId, SysUser currentUser);
    /**
     * 分页查询
     *
     * @param saleProductVo 对象
     * @param pageSize 当前页面
     * @param pageNum 页面数量
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    ReturnEntity page(SaleProductVo saleProductVo, int pageSize, int pageNum);
    /**
     * 列表查询
     *
     * @param saleProductVo 对象
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    public ReturnEntity list(SaleProductVo saleProductVo);
    /**
     * 修改
     *
     * @param saleProductVo 对象
     * @param currentUser 当前用户
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    ReturnEntity addOrUpdate(SaleProductVo saleProductVo, SysUser currentUser);
    /**
     * 删除
     *
     * @param id 主键id删除
     * @param currentUser 当前用户
     * @return ReturnEntity 对象
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    ReturnEntity delete(String id, SysUser currentUser);
    /**
     * 获取组织机构和人员树
     *
     * @param saleProductVo 对象
     * @return ReturnResult 对象
     * @author shengQiang yu
     * @date 2018-11-29 15:43
     */
    ReturnEntity dTreeList(SaleProductVo saleProductVo);
    /**
     * 获取集合
     *
     * @param saleProductVo 对象
     * @return List<SaleProduct> SaleProduct集合
     * @author shengQiang yu
     * @date 2019-9-9 14:17:04
     */
    List<SaleProduct> acceptList(SaleProductVo saleProductVo);
}
